使用 GitLab + Jenkins 实现持续集成(CI)环境 |
您所在的位置:网站首页 › gitlab 自动同步 › 使用 GitLab + Jenkins 实现持续集成(CI)环境 |
使用 GitLab + Jenkins 实现持续集成(CI)环境
一、持续集成简介1.GitLab 简介2.Jenkins 简介3.GitLab 和 GitHub 的区别4.持续集成系统的工作流程
二、使用 GitLab + Jenkins 实现持续集成(CI)环境1.安装 Gitlab1)登录 Gitlab2)配置邮件报警3)创建群组4)创建项目5)配置免密克隆
2.安装 Jenkins1)登录 Jenkins,并安装相关插件2)配置 Jenkins 实现 GitLab 更新代码3)在 Jenkins 上创建项目4)将代码发布到 Web 服务器5)验证
3.实现 Jenkins 自动部署1)安装插件2)配置身份验证令牌3)在 Jenkins 上配置触发器4)在 GitLab 的项目上配置链接和 Token5)验证
4.Jenkins 版本升级
一、持续集成简介
持续集成:Continuous Integration 简单来说就是指,程序员在开发代码的过程中,可以频繁的将代码部署到主干上,并进行自动化测试。持续交付:Continuous Delivery 简单来说就是指在持续集成的基础上,将代码部署到预生产环境。持续部署:Continuous Deoloyment 简单来说就是指在持续交付的基础上,将要部署的代码实现自动部署,包括持续交互,持续部署。 1.GitLab 简介GitLab 是一个用于仓库管理系统的开源项目。使用 Git 作为代码管理工具,可以通过 Web 界面来管理 Git 仓库。 2.Jenkins 简介Jenkins 是一个独立的开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 作用: 保证团队开发人员提交代码的质量,还能够减轻软件发布时的压力;持续集成中的任何一个环节都是自动完成的,无需太多人工干预,有利于减少重复过程以节省时间、费用和工作量。Jenkins 特点: 开源免费;跨平台,支持所有的平台。Master/Slave 支持分布式的 build(构建) 3.GitLab 和 GitHub 的区别相同点: 二者都是基于 Web 的 Git 仓库,在很大程度上 GitLab 是仿照 GitHub 来做的,它们都提供了分享开源项目的平台。不同点: GitHub 如果要使用私有仓库,超过 4 个是需要付费的。GitLab 可以在上面创建私人的免费仓库。GitLab 让开发团队对他们的代码仓库拥有更多的控制。 4.持续集成系统的工作流程 开发者将新版本代码 push 到 GitLab 远程仓库上;随后 GitLab 会触发 Jenkins 来进行拉取到本地(通过 Web Hook 或定时检测)最后 Jenkins 会根据事先配置好的脚本进行 Build。 二、使用 GitLab + Jenkins 实现持续集成(CI)环境准备工作 主机名操作系统硬件IP 地址GitLabCentOS 7.44 G(联网状态)192.168.1.1JenkinsCentOS 7.44 G(联网状态)192.168.1.2ApacheCentOS 7.42 G192.168.1.3 1.安装 Gitlab安装 Gitlab 所需组件 [root@GitLab ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python开启 Postfix 邮件服务 [root@GitLab ~]# systemctl start postfix [root@GitLab ~]# systemctl enable postfix安装 Gitlab [root@GitLab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm [root@GitLab ~]# ls anaconda-ks.cfg gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm [root@GitLab ~]# yum -y localinstall gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm配置 Gitlab 访问地址 [root@GitLab ~]# sed -i "/^external_url/cexternal_url 'http://192.168.1.1'" /etc/gitlab/gitlab.rb 注意:你们也可以将 IP 地址替换为域名。重置 Gitlab(时间较长) [root@GitLab ~]# gitlab-ctl reconfigure [root@GitLab ~]# netstat -anpt | grep nginx访问:http://192.168.1.1 重置 Gitlab [root@GitLab ~]# gitlab-ctl reconfigure登录控制台发送测试邮件 [root@GitLab ~]# gitlab-rails console irb(main):001:0> Notify.test_email('[email protected]','Test','Hello ZhangSan').deliver_now
点击创建群组 使用河北彭于晏用户登录创建 将公钥上传到 GitLab 中 安装 JDK(因为 Jenkins 是使用 Java 编写的,所以需要先安装 JDK) [root@Jenkins ~]# tar xf jdk-8u181-linux-x64.tar.gz [root@Jenkins ~]# ls anaconda-ks.cfg jdk1.8.0_181 jdk-8u181-linux-x64.tar.gz [root@Jenkins ~]# mv jdk1.8.0_181/ /usr/local/java [root@Jenkins ~]# cat /etc/profile JAVA_HOME=/usr/local/java/ PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH END [root@Jenkins ~]# source /etc/profile [root@Jenkins ~]# java -version # 查看 Java 版本 java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)安装 Jenkins [root@Jenkins ~]# wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.4-1.1.noarch.rpm [root@Jenkins ~]# ls anaconda-ks.cfg jenkins-2.222.4-1.1.noarch.rpm [root@Jenkins ~]# yum -y localinstall jenkins-2.222.4-1.1.noarch.rpm修改配置文件 [root@Jenkins ~]# sed -i '/^JENKINS_USER/cJENKINS_USER="root"' /etc/sysconfig/jenkins创建软连接优化执行路径 [root@Jenkins ~]# ln -s /usr/local/java/bin/java /usr/bin/启动 Jenkins [root@Jenkins ~]# systemctl start jenkins [root@Jenkins ~]# netstat -anpt | grep 8080访问:http://192.168.1.2:8080 安装 Jenkins 插件 Credentials # 签名证书管理插件 Gitlab # 安装后从 GitLab 获取代码 Git 和 Git Client # 用于 Jenkins 在 GitLab 中拉取源码 GitLab Hook # GitLab 触发 Jenkins 构建项目 Gitlab Authentication # GitLab 和 Jenkins 认证插件 SSH Plugin # 进程执行 Shell 脚本 Publish Over SSH # 用于通过 SSH 部署应用配置 Jenkins 免密拉取 GitLab 代码 [root@Jenkins ~]# ssh-keygen -t rsa [root@Jenkins ~]# cat .ssh/id_rsa.pub将公钥上传到 GitLab 上
这边简单说一下大致的流程: 通过我们这一系列的操作也可以看出来,首先需要在 GitLab 上创建(上传)项目,然后 Jenkins 会将代码下载到本地;最后可以使用 Jenkins 将代码发送给指定服务器。在 192.168.1.3 服务器上操作 [root@Apache ~]# yum -y install httpd [root@Apache ~]# systemctl start httpd在 Jenkins 上配置 SSH 免密登录 [root@Jenkins ~]# ssh-copy-id [email protected]创建自动上传 Web 代码的脚本 [root@Jenkins ~]# cat |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |